home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / Sample.bin / JavaPad.java < prev    next >
Text File  |  1998-11-05  |  16KB  |  585 lines

  1. /*
  2.     This simple extension of the java.awt.Frame class
  3.     contains all the elements necessary to act as the
  4.     main window of an application.
  5.  */
  6.  
  7. import java.awt.*;
  8. import java.io.*;
  9. import java.util.*;
  10. import java.awt.event.*;
  11.  
  12.  
  13. public class JavaPad extends Frame
  14. {
  15.     public JavaPad() {
  16.         
  17.         Properties prop = new Properties(System.getProperties());
  18.         m_fileSeparator = prop.getProperty("file.separator");
  19.         
  20.         //{{INIT_CONTROLS
  21.         setLayout(new GridLayout(0,1,0,0));
  22.         setVisible(false);
  23.         setSize(400,300);
  24.         saveFileDialog1 = new java.awt.FileDialog(this);
  25.         saveFileDialog1.setMode(FileDialog.SAVE);
  26.         saveFileDialog1.setTitle("Save");
  27.         openFileDialog1 = new java.awt.FileDialog(this);
  28.         openFileDialog1.setMode(FileDialog.LOAD);
  29.         openFileDialog1.setTitle("Open");
  30.         textArea1 = new java.awt.TextArea();
  31.         textArea1.setBounds(0,0,400,300);
  32.         add(textArea1);
  33.         setTitle("JavaPad - Untitled");
  34.         //}}
  35.  
  36.            m_findReplace = new FindReplace("",textArea1);
  37.  
  38.         //{{INIT_MENUS
  39.         menu1.setLabel("File");
  40.         mainMenuBar = new java.awt.MenuBar();
  41.         menu1 = new java.awt.Menu("File");
  42.         miNew = new java.awt.MenuItem("New");
  43.         menu1.add(miNew);
  44.         miNew.setLabel("New");
  45.         miOpen = new java.awt.MenuItem("Open...");
  46.         menu1.add(miOpen);
  47.         miOpen.setLabel("Open...");
  48.         miSave = new java.awt.MenuItem("Save");
  49.         menu1.add(miSave);
  50.         miSave.setLabel("Save");
  51.         miSaveAs = new java.awt.MenuItem("Save As...");
  52.         menu1.add(miSaveAs);
  53.         miSaveAs.setLabel("Save As...");
  54.         menu1.addSeparator();
  55.         miExit = new java.awt.MenuItem("Exit");
  56.         menu1.add(miExit);
  57.         miExit.setLabel("Exit");
  58.         mainMenuBar.add(menu1);
  59.         menu2.setLabel("Edit");
  60.         menu2 = new java.awt.Menu("Edit");
  61.         miCut = new java.awt.MenuItem("Cut");
  62.         menu2.add(miCut);
  63.         miCut.setLabel("Cut");
  64.         miCopy = new java.awt.MenuItem("Copy");
  65.         menu2.add(miCopy);
  66.         miCopy.setLabel("Copy");
  67.         miPaste = new java.awt.MenuItem("Paste");
  68.         menu2.add(miPaste);
  69.         miPaste.setLabel("Paste");
  70.         menu2.addSeparator();
  71.         miSelectAll = new java.awt.MenuItem("Select All");
  72.         menu2.add(miSelectAll);
  73.         miSelectAll.setLabel("Select All");
  74.         mainMenuBar.add(menu2);
  75.         menu4.setLabel("Search");
  76.         menu4 = new java.awt.Menu("Search");
  77.         miFind = new java.awt.MenuItem("Find ...");
  78.         menu4.add(miFind);
  79.         miFind.setLabel("Find ...");
  80.         miFindAgain = new java.awt.MenuItem("Find Again");
  81.         menu4.add(miFindAgain);
  82.         miFindAgain.setLabel("Find Again");
  83.         miReplace = new java.awt.MenuItem("Replace ...");
  84.         menu4.add(miReplace);
  85.         miReplace.setLabel("Replace ...");
  86.         mainMenuBar.add(menu4);
  87.         menu3.setLabel("Help");
  88.         menu3 = new java.awt.Menu("Help");
  89.         mainMenuBar.setHelpMenu(menu3);
  90.         miAbout = new java.awt.MenuItem("About");
  91.         menu3.add(miAbout);
  92.         miAbout.setLabel("About");
  93.         mainMenuBar.add(menu3);
  94.         setMenuBar(mainMenuBar);
  95.         //}}
  96.     
  97.         //{{REGISTER_LISTENERS
  98.         SymKey lSymKey = new SymKey();
  99.         textArea1.addKeyListener(lSymKey);
  100.         SymAction lSymAction = new SymAction();
  101.         miAbout.addActionListener(lSymAction);
  102.         miExit.addActionListener(lSymAction);
  103.         miReplace.addActionListener(lSymAction);
  104.         miSelectAll.addActionListener(lSymAction);
  105.         miPaste.addActionListener(lSymAction);
  106.         miCopy.addActionListener(lSymAction);
  107.         miCut.addActionListener(lSymAction);
  108.         miSaveAs.addActionListener(lSymAction);
  109.         miNew.addActionListener(lSymAction);
  110.         miSave.addActionListener(lSymAction);
  111.         miOpen.addActionListener(lSymAction);
  112.         miFind.addActionListener(lSymAction);
  113.         miFindAgain.addActionListener(lSymAction);
  114.         SymWindow aSymWindow = new SymWindow();
  115.         this.addWindowListener(aSymWindow);
  116.         //}}
  117.     }
  118.  
  119.     public JavaPad(String title) {
  120.         this();
  121.         setTitle(title);
  122.     }
  123.  
  124.  
  125.     
  126.  
  127.     static public void main(String args[]) {
  128.         (new JavaPad()).show();
  129.     }
  130.     
  131.     String m_fileSeparator;
  132.     String m_dirName;
  133.     String m_fileName;
  134.     String m_Clipboard;
  135.  
  136.     //{{DECLARE_CONTROLS
  137.     java.awt.FileDialog saveFileDialog1 = new java.awt.FileDialog(this);
  138.     java.awt.FileDialog openFileDialog1 = new java.awt.FileDialog(this);
  139.     java.awt.TextArea textArea1 = new java.awt.TextArea();
  140.     //}}
  141.     FindDialog m_findDialog;
  142.     ReplaceDialog m_replaceDialog;
  143.  
  144.     //{{DECLARE_MENUS
  145.     java.awt.MenuBar mainMenuBar = new java.awt.MenuBar();
  146.     java.awt.Menu menu1 = new java.awt.Menu();
  147.     java.awt.MenuItem miNew = new java.awt.MenuItem();
  148.     java.awt.MenuItem miOpen = new java.awt.MenuItem();
  149.     java.awt.MenuItem miSave = new java.awt.MenuItem();
  150.     java.awt.MenuItem miSaveAs = new java.awt.MenuItem();
  151.     java.awt.MenuItem miExit = new java.awt.MenuItem();
  152.     java.awt.Menu menu2 = new java.awt.Menu();
  153.     java.awt.MenuItem miCut = new java.awt.MenuItem();
  154.     java.awt.MenuItem miCopy = new java.awt.MenuItem();
  155.     java.awt.MenuItem miPaste = new java.awt.MenuItem();
  156.     java.awt.MenuItem miSelectAll = new java.awt.MenuItem();
  157.     java.awt.Menu menu4 = new java.awt.Menu();
  158.     java.awt.MenuItem miFind = new java.awt.MenuItem();
  159.     java.awt.MenuItem miFindAgain = new java.awt.MenuItem();
  160.     java.awt.MenuItem miReplace = new java.awt.MenuItem();
  161.     java.awt.Menu menu3 = new java.awt.Menu();
  162.     java.awt.MenuItem miAbout = new java.awt.MenuItem();
  163.     //}}
  164.     FindReplace m_findReplace;
  165.     
  166.     void selectAll() {
  167.         textArea1.select(0, textArea1.getText().length());
  168.     }
  169.  
  170.     void paste() {
  171.         textArea1. replaceRange(m_Clipboard, textArea1.getSelectionStart(), textArea1.getSelectionEnd());
  172.     }
  173.  
  174.     void copy() {
  175.         m_Clipboard = textArea1.getSelectedText();
  176.     }
  177.  
  178.     void cut() {
  179.         m_Clipboard = textArea1.getSelectedText();
  180.         textArea1. replaceRange("", textArea1.getSelectionStart(), textArea1.getSelectionEnd());
  181.     }
  182.  
  183.     void saveAs() {
  184.         saveFileDialog1.show();
  185.         m_fileName = saveFileDialog1.getFile();
  186.         m_dirName = saveFileDialog1.getDirectory();
  187.  
  188.         if (m_fileName!=null)
  189.         {
  190.             try {
  191.                 FileOutputStream foS = new FileOutputStream( m_dirName + m_fileSeparator + m_fileName );
  192.  
  193.                 String text = textArea1.getText();
  194.                 byte[] byteBuffer = text.getBytes();
  195.                 
  196.                 foS.write(byteBuffer);
  197.                 foS.close();
  198.             }
  199.             catch (IOException e)
  200.             {
  201.                 System.out.print("Error reading file");
  202.             }
  203.         }
  204.         setTitle("JavaPad - " + m_fileName);
  205.     }
  206.  
  207.     void newAction() {
  208.         m_fileName = "Untitled";
  209.         textArea1.setText("");
  210.         setTitle("JavaPad - " + m_fileName);
  211.     }
  212.  
  213.     void save() {
  214.             
  215.         if (m_fileName == "Untitled")
  216.         {
  217.             // Create a new file and then save it's contents.
  218.             saveFileDialog1.show();
  219.             m_fileName = saveFileDialog1.getFile();
  220.             m_dirName = saveFileDialog1.getDirectory();
  221.         }
  222.  
  223.         if (m_fileName!=null)
  224.         {
  225.             try {
  226.                 FileOutputStream foS = new FileOutputStream( m_dirName + m_fileSeparator + m_fileName );
  227.  
  228.                 String text = textArea1.getText();
  229.                 byte[] byteBuffer = text.getBytes();
  230.                 foS.write(byteBuffer);
  231.                 foS.close();
  232.             }
  233.             catch (IOException e)
  234.             {
  235.                 System.out.print("Error reading file");
  236.             }
  237.         }
  238.     }
  239.  
  240.     void open() {
  241.  
  242.         openFileDialog1.setVisible(true);
  243.         m_fileName = openFileDialog1.getFile();
  244.         m_dirName = openFileDialog1.getDirectory();
  245.         if (openFileDialog1.getFile()!=null)
  246.         {
  247.             try {
  248.                 BufferedReader fiS = new BufferedReader(new FileReader(  m_dirName + m_fileSeparator + m_fileName  ));
  249.                 textArea1.setText("");
  250.  
  251.                 String s = new String("");
  252.                 while ((s = fiS.readLine()) != null)
  253.                 {
  254.                     textArea1.append(s + "\n");
  255.                 }
  256.                 textArea1.select(0,0);
  257.                 setTitle("JavaPad - " + m_fileName);
  258.                 fiS.close();
  259.             }
  260.             catch (IOException e)
  261.             {
  262.                 System.out.print("Error reading file");
  263.             }
  264.         }
  265.         //}}
  266.     }
  267.  
  268.     public void CleanupAndClose()
  269.     {
  270.         this.setVisible(false);         // hide the Frame
  271.         dispose();      // free the system resources
  272.         System.exit(0); // close the application
  273.     }
  274.  
  275.     void find()
  276.     {   
  277.         int select_start;
  278.         int select_end;
  279.         int select_diff;
  280.         int start_index;
  281.         String select_body;
  282.         
  283.         //automatically put in selection in FindDialog field
  284.         select_start = textArea1.getSelectionStart();
  285.         select_end = textArea1.getSelectionEnd();
  286.         select_diff = select_end - select_start;
  287.         //set find field if selected text not too big
  288.         if(select_diff > 0 && select_diff < 20) {  
  289.             m_findReplace.setFind(textArea1.getSelectedText());
  290.             start_index = textArea1.getSelectionStart() + select_diff;
  291.             m_findReplace.setIndex(start_index);
  292.         }
  293.         else {
  294.             m_findReplace.setFind("");
  295.             m_findReplace.setIndex(textArea1.getSelectionStart());
  296.         }
  297.         m_findReplace.setOccur(0);
  298.                      
  299.         (new FindDialog(this, "Find", true, m_findReplace)).show();
  300.     }
  301.  
  302.     void findAgain()
  303.     {
  304.         FindReplaceEngine fre;
  305.         fre = new FindReplaceEngine(m_findReplace);
  306.         fre.FindIt();
  307.         if(!m_findReplace.isFoundIt()) this.getToolkit().beep();
  308.     }
  309.  
  310.     class SymKey extends java.awt.event.KeyAdapter
  311.     {
  312.         public void keyPressed(java.awt.event.KeyEvent event)
  313.         {
  314.             Object object = event.getSource();
  315.             if (object == textArea1)
  316.                 textArea1_KeyPress(event);
  317.         }
  318.     }
  319.  
  320.     void textArea1_KeyPress(java.awt.event.KeyEvent event)
  321.     {   
  322.         int keypressed;
  323.         keypressed = event.getKeyCode();
  324.         //114 is F3 on my keyboard, although java.awt.Event.F3 is 1010
  325.         if(keypressed == 114) { miFindAgain_ActionPerformed(new ActionEvent(this,0,"")); }
  326.     }
  327.  
  328.     class SymAction implements java.awt.event.ActionListener
  329.     {
  330.         public void actionPerformed(java.awt.event.ActionEvent event)
  331.         {
  332.             Object object = event.getSource();
  333.             if (object == miAbout)
  334.                 miAbout_ActionPerformed(event);
  335.             else if (object == miExit)
  336.                 miExit_ActionPerformed(event);
  337.             else if (object == miReplace)
  338.                 miReplace_ActionPerformed(event);
  339.             else if (object == miSelectAll)
  340.                 miSelectAll_ActionPerformed(event);
  341.             else if (object == miPaste)
  342.                 miPaste_ActionPerformed(event);
  343.             else if (object == miCopy)
  344.                 miCopy_ActionPerformed(event);
  345.             else if (object == miCut)
  346.                 miCut_ActionPerformed(event);
  347.             else if (object == miSaveAs)
  348.                 miSaveAs_ActionPerformed(event);
  349.             else if (object == miNew)
  350.                 miNew_ActionPerformed(event);
  351.             else if (object == miSave)
  352.                 miSave_ActionPerformed(event);
  353.             else if (object == miOpen)
  354.                 miOpen_ActionPerformed(event);
  355.             else if (object == miFind)
  356.                 miFind_ActionPerformed(event);
  357.             else if (object == miFindAgain)
  358.                 miFindAgain_ActionPerformed(event);
  359.         }
  360.     }
  361.  
  362.     void miAbout_ActionPerformed(java.awt.event.ActionEvent event)
  363.     {
  364.         // to do: code goes here.
  365.              
  366.         miAbout_ActionPerformed_Interaction1(event);
  367.     }
  368.  
  369.     void miAbout_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  370.     {
  371.         try {
  372.             // AboutDialog Create and show as modal
  373.             (new AboutDialog(this, true)).setVisible(true);
  374.         } catch (Exception e) {
  375.         }
  376.     }
  377.  
  378.     void miExit_ActionPerformed(java.awt.event.ActionEvent event)
  379.     {
  380.         // to do: code goes here.
  381.              
  382.         miExit_ActionPerformed_Interaction1(event);
  383.     }
  384.  
  385.     void miExit_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  386.     {
  387.         try {
  388.             // QuitDialog Create and show as modal
  389.             (new QuitDialog(this, true)).setVisible(true);
  390.         } catch (Exception e) {
  391.         }
  392.     }
  393.  
  394.     void miReplace_ActionPerformed(java.awt.event.ActionEvent event)
  395.     {
  396.         // to do: code goes here.
  397.              
  398.         miReplace_ActionPerformed_Interaction1(event);
  399.     }
  400.  
  401.     void miReplace_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  402.     {
  403.         try {
  404.             // ReplaceDialog Create and show as modal
  405.             (new ReplaceDialog(this, true)).setVisible(true);
  406.         } catch (Exception e) {
  407.         }
  408.     }
  409.  
  410.     void miSelectAll_ActionPerformed(java.awt.event.ActionEvent event)
  411.     {
  412.         // to do: code goes here.
  413.              
  414.         miSelectAll_ActionPerformed_Interaction1(event);
  415.     }
  416.  
  417.     void miSelectAll_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  418.     {
  419.         try {
  420.             this.selectAll();
  421.         } catch (Exception e) {
  422.         }
  423.     }
  424.  
  425.     void miPaste_ActionPerformed(java.awt.event.ActionEvent event)
  426.     {
  427.         // to do: code goes here.
  428.              
  429.         miPaste_ActionPerformed_Interaction1(event);
  430.     }
  431.  
  432.     void miPaste_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  433.     {
  434.         try {
  435.             this.paste();
  436.         } catch (Exception e) {
  437.         }
  438.     }
  439.  
  440.     void miCopy_ActionPerformed(java.awt.event.ActionEvent event)
  441.     {
  442.         // to do: code goes here.
  443.              
  444.         miCopy_ActionPerformed_Interaction1(event);
  445.     }
  446.  
  447.     void miCopy_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  448.     {
  449.         try {
  450.             this.copy();
  451.         } catch (Exception e) {
  452.         }
  453.     }
  454.  
  455.     void miCut_ActionPerformed(java.awt.event.ActionEvent event)
  456.     {
  457.         // to do: code goes here.
  458.              
  459.         miCut_ActionPerformed_Interaction1(event);
  460.     }
  461.  
  462.     void miCut_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  463.     {
  464.         try {
  465.             this.cut();
  466.         } catch (Exception e) {
  467.         }
  468.     }
  469.  
  470.     void miSaveAs_ActionPerformed(java.awt.event.ActionEvent event)
  471.     {
  472.         // to do: code goes here.
  473.              
  474.         miSaveAs_ActionPerformed_Interaction1(event);
  475.     }
  476.  
  477.     void miSaveAs_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  478.     {
  479.         try {
  480.             this.saveAs();
  481.         } catch (Exception e) {
  482.         }
  483.     }
  484.  
  485.     void miNew_ActionPerformed(java.awt.event.ActionEvent event)
  486.     {
  487.         // to do: code goes here.
  488.              
  489.         miNew_ActionPerformed_Interaction1(event);
  490.     }
  491.  
  492.     void miNew_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  493.     {
  494.         try {
  495.             this.newAction();
  496.         } catch (Exception e) {
  497.         }
  498.     }
  499.  
  500.     void miSave_ActionPerformed(java.awt.event.ActionEvent event)
  501.     {
  502.         // to do: code goes here.
  503.              
  504.         miSave_ActionPerformed_Interaction1(event);
  505.     }
  506.  
  507.     void miSave_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  508.     {
  509.         try {
  510.             this.save();
  511.         } catch (Exception e) {
  512.         }
  513.     }
  514.  
  515.     void miOpen_ActionPerformed(java.awt.event.ActionEvent event)
  516.     {
  517.         // to do: code goes here.
  518.              
  519.         miOpen_ActionPerformed_Interaction1(event);
  520.     }
  521.  
  522.     void miOpen_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  523.     {
  524.         try {
  525.             this.open();
  526.         } catch (Exception e) {
  527.         }
  528.     }
  529.  
  530.     void miFind_ActionPerformed(java.awt.event.ActionEvent event)
  531.     {
  532.         // to do: code goes here.
  533.              
  534.         miFind_ActionPerformed_Interaction1(event);
  535.     }
  536.  
  537.     void miFind_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  538.     {
  539.         try {
  540.             this.find();
  541.         } catch (Exception e) {
  542.         }
  543.     }
  544.  
  545.     void miFindAgain_ActionPerformed(java.awt.event.ActionEvent event)
  546.     {
  547.         // to do: code goes here.
  548.              
  549.         miFindAgain_ActionPerformed_Interaction1(event);
  550.     }
  551.  
  552.     void miFindAgain_ActionPerformed_Interaction1(java.awt.event.ActionEvent event)
  553.     {
  554.         try {
  555.             this.findAgain();
  556.         } catch (Exception e) {
  557.         }
  558.     }
  559.  
  560.     class SymWindow extends java.awt.event.WindowAdapter
  561.     {
  562.         public void windowClosing(java.awt.event.WindowEvent event)
  563.         {
  564.             Object object = event.getSource();
  565.             if (object == JavaPad.this)
  566.                 JavaPad_WindowClosing(event);
  567.         }
  568.     }
  569.  
  570.     void JavaPad_WindowClosing(java.awt.event.WindowEvent event)
  571.     {
  572.         // to do: code goes here.
  573.              
  574.         JavaPad_WindowClosing_Interaction1(event);
  575.     }
  576.  
  577.     void JavaPad_WindowClosing_Interaction1(java.awt.event.WindowEvent event)
  578.     {
  579.         try {
  580.             this.dispose();
  581.         } catch (Exception e) {
  582.         }
  583.     }
  584. }
  585.